---
id: legacy_quickstart
title: Manual setup
sidebar_label: Manual setup
---

:::info
This is the manual way fo setting up FireCMS. You are encourage to simply run
`yarn create firecms-app --v2` instead.
:::

Let's build a very simple CMS that creates a collection of products, with
some properties. It includes samples of some advanced features, such as
dynamic conditional fields or references (to the same products' collection,
for simplicity).

We are defining our `Product` type for better type checking and code clarity,
but it is not compulsory.

Authentication and authorization are also enabled, and make use of the `extra`
field in the `authController` to check for permissions.

#### Create a new React app including Typescript:

```
yarn create vite my-cms --template react-ts
```

#### Go into the new directory:

```
cd my-cms
```

#### Install FireCMS and it's peer dependencies:

```
yarn add firecms@^2.0.0 firebase@^9 @mui/material@^5 @mui/icons-material@^5 @mui/lab@latest @mui/x-date-pickers@^5.0.0-beta.1 @emotion/react @emotion/styled react-router@^6 react-router-dom@^6
```

You can then replace the content of the file App.tsx with the following sample code.

Remember to **replace** the Firebase config with the one you get after creating
a webapp in the Firebase console.

If you don't know where to find the Firebase app config, check the
[Firebase setup](firebase_setup.md) section


import CodeBlock from "@theme/CodeBlock";
import MyComponentSource from "!!raw-loader!../../samples/samples_v2/SimpleApp";

<CodeBlock language="tsx">{MyComponentSource}</CodeBlock>

#### Run

Then simply run:

```
yarn dev
```

You should be able to see your FireCMS instance in your browser, awesome!

:::warning
Vite uses the default url `http://127.0.0.1:5173` for the development server
in versions of `node` < 18.0.0.
If you are using a version of node < 18.0.0, you will need to add this url to
the authorized domains in the Firebase console.
Firebase Auth will require to add this url to the authorized domains in the
Firebase console.
Alternatively, you can use the url `http://localhost:5173`.
:::

